---
title: Printing Schemas
description: Guide for printing a Pothos schema to an SDL schema file
---

Sometimes it's useful to have an SDL version of your schema. To do this, you can use some tools from
the `graphql` package to write your schema out as SDL to a file.

```typescript
import { writeFileSync } from 'fs';
import { printSchema, lexicographicSortSchema } from 'graphql';
import SchemaBuilder from '@pothos/core';

const builder = new SchemaBuilder({});

builder.queryType({
  fields: (t) => ({
    hello: t.string({
      args: {
        name: t.arg.string(),
      },
      resolve: (parent, { name }) => `hello, ${name || 'World'}`,
    }),
  }),
});

const schema = builder.toSchema();
const schemaAsString = printSchema(lexicographicSortSchema(schema));

writeFileSync('/path/to/schema.graphql', schemaAsString);
```

## Using graphql-code-generator

An alternative to printing your schema directly is to generate your schema file using
graphql-code-generator.

You can add the `schema-ast` plugin to have graphql-code-generator generate your schema file for
you.

See [Generating Client Types](./generating-client-types) for more details
